﻿using System;

namespace InseSoft.Models.Entities
{
    //public sealed class Cotizador: ICotizador
    //{
        //private readonly Cotizacion context;

        //public Cotizador(Cotizacion context)
        //{
        //    this.context = context;
        //}

        //public decimal CalcularPrecioUnitario()
        //{
        //    return context.TotalCol / context.Cantidad;
        //}

        //public decimal CalcularTotalCol()
        //{
        //    var sinEvento = AgregarPorcentaje(context.Subtotal, context.Empresa.Utilidad);
        //    return context.Evento ? AgregarPorcentaje(sinEvento, context.PorcEvento) : sinEvento;
        //}

        //public decimal CalcularTotalUsd()
        //{
        //    return context.TotalCol / context.TipoCambio.Monto;
        //}

        //public decimal CalcularSubtotal()
        //{
        //    var suma = context.PrecioMaterial +
        //                context.PrecioTintas +
        //                context.PrecioArte +
        //                context.PrecioPositivo +
        //                context.PrecioMolde +
        //                context.PrecioSolvente +
        //                context.PrecioCorte +
        //                context.PrecioImpresion +
        //                context.Troquel +
        //                context.Doblez +
        //                context.Cuatricromia +
        //                context.Otro;
        //    return Math.Round(suma, 2);
        //}

        //public decimal CalcularPrecioCorte(decimal precioCorte)
        //{
        //    return Math.Max(precioCorte * (context.Cantidad / 1000m), precioCorte);
        //}

        //public decimal CalcularPrecioSolvente(decimal precioSolvente)
        //{
        //    return Math.Max(precioSolvente * context.Tintas, precioSolvente);
        //}

        //public decimal CalcularPrecioMolde(decimal precioMolde)
        //{
        //    return Math.Max(precioMolde * context.Tintas, precioMolde);
        //}

        //public decimal CalcularPrecioPositivo(decimal precioPositivo)
        //{
        //    const int minPrecioPositivo = 2000;
        //    return Math.Max(context.Altura * context.Base * context.Montaje * precioPositivo * context.Tintas, minPrecioPositivo);
        //}

        //public decimal CalcularPrecioArte(decimal precioArte)
        //{
        //    return Math.Max(context.Tintas * precioArte, precioArte);
        //}

        //public decimal CalcularPrecioTintas(decimal precioTinta)
        //{
        //    return context.Altura * context.Base * precioTinta * (context.Cubrimiento / 100) * context.Cantidad;
        //}

        //public decimal CalcularPrecioMaterial(decimal impVenta)
        //{
        //    return context.Laminas * AgregarPorcentaje(context.Material.CostoInventario, impVenta);
        //}

        //public decimal CalcularPrecioImpresion(Precio precio)
        //{
        //    return Math.Max((context.Cantidad / context.Montaje * context.Tintas) / precio.Velocidad * precio.HoraImpresion
        //                    , precio.HoraImpresion);
        //}

        //public void CalcularRendimientos()
        //{
        //    var materialBaseEntreAltura = context.Material.Base / context.Altura;
        //    var materialAlturaEntreBase = context.Material.Altura / context.Base;
        //    var materialAlturaEntreAltura = context.Material.Altura / context.Altura;
        //    var materialBaseEntreBase = context.Material.Base / context.Base;

        //    decimal rendimiento1 = (int)materialBaseEntreAltura * (int)materialAlturaEntreBase;
        //    decimal rendimiento2 = (int)materialAlturaEntreAltura * (int)materialBaseEntreBase;

        //    if (rendimiento1 > rendimiento2)
        //    {
        //        context.DivLargo = materialBaseEntreAltura;
        //        context.DivAncho = materialAlturaEntreBase;
        //        context.Rendimiento = rendimiento1;
        //    }
        //    else
        //    {
        //        context.DivLargo = materialAlturaEntreAltura;
        //        context.DivAncho = materialBaseEntreBase;
        //        context.Rendimiento = rendimiento2;
        //    }
        //    context.Laminas = context.Cantidad / context.Rendimiento;
        //}

        //public decimal AgregarPorcentaje(decimal monto, decimal porcentaje)
        //{
        //    return monto + (monto * porcentaje / 100);
        //}
    //}
}
